class Solution {
    public List<String> subdomainVisits(String[] cpdomains) {
        HashMap<String,Integer> result = new HashMap<String,Integer>();
        for(String domain : cpdomains){
            // 分割出数量
            String[] cpInfo = domain.split("\\s+");
            // 分割出所有域名
            String[] domains = cpInfo[1].split("\\.");
            int number = Integer.valueOf(cpInfo[0]);
            String str = "";
            // 然后给 domains 做一个循环，由于域名是从后往前访问，所以循环是逆循环
            for(int i = domains.length - 1; i >= 0; --i){
              str = domains[i] + (i == domains.length - 1 ? "" : ".") + str;
              result.put(str,result.getOrDefault(str, 0) + number);
            }
        }

        List<String> ans = new ArrayList<String>();
        // 按照域名拿出访问次数，然后拼接成答案
         for (String dom: result.keySet())
            ans.add("" + result.get(dom) + " " + dom);
        return ans;

    }
}